﻿using Newtonsoft.Json;
using Newtonsoft.Json.Linq; // 使用 JArray 和 JObject
using System.IO;
using System.Windows;

namespace OnlineStore
{
    /// <summary>
    /// json 读取和写入类
    /// </summary>
    public static class ParseJson
    {
        /// <summary>
        /// 读取 Json 文件，返回 JObject 对象
        /// </summary>
        /// <param name="filePath">Json 文件路径</param>
        /// <returns>返回 JObject 对象</returns>
        public static JObject ReadJObject(string filePath)
        {
            if (!File.Exists(filePath))
            {
                MessageBox.Show($"文件路径错误【{filePath}】");
                return null;
            }
            try
            {
                string json = File.ReadAllText(filePath);
                JObject objs = JObject.Parse(json);
                return objs;
            }
            catch (System.Exception e)
            {
                MessageBox.Show(e.StackTrace);
                return null;
            }
        }

        /// <summary>
        /// 读取 Json 文件，返回 JArray 对象
        /// </summary>
        /// <param name="filePath">Json 文件路径</param>
        /// <returns>返回 JArray 对象</returns>
        public static JArray ReadJArray(string filePath)
        {
            if (!File.Exists(filePath))
            {
                MessageBox.Show($"文件路径错误【{filePath}】");
                return null;
            }
            try
            {
                string json = File.ReadAllText(filePath);
                JArray ares = JArray.Parse(json);
                return ares;
            }
            catch (System.Exception e)
            {
                MessageBox.Show(e.StackTrace);
                return null;
            }
            
        }

        /// <summary>
        /// 将 JContainer 对象写入文件中
        /// </summary>
        /// <param name="filePath">需要写入的文件路径</param>
        /// <param name="json">JContainer 对象</param>
        public static void WriteJObject(string filePath, JContainer json) 
        {
            if (!File.Exists(filePath))
            {
                MessageBox.Show($"文件路径错误【{filePath}】");
                return;
            }
            try
            {
                string text = JsonConvert.SerializeObject(json, Formatting.Indented);
                File.WriteAllText(filePath, text);
            }
            catch (System.Exception e)
            {
                MessageBox.Show(e.StackTrace);
            }
            
        }

    }
}
